python-为什么 {} 不能作为默认参数?
python-为什么 {} 不能作为默认参数?
这里会有个提示,但不是报错
为什么 {} 不能作为默认参数?
在 Python 中,函数的默认参数只在函数定义时计算一次,所以如果你使用 {} 作为默认值,它会在所有函数调用之间共享。这意味着:
-
多次调用 resp_success() 时,data 会共享同一个字典
-
如果 data 在一个调用中被修改,后续调用也会受到影响(因为所有调用都引用同一个 {})
比如下面的代码:
def add_item(item, items=[]):
items.append(item)
return items
# 第一次调用,期望返回 [1]
print(add_item(1)) # 输出 [1]
# 第二次调用,期望返回 [2],但实际输出 [1, 2]
print(add_item(2)) # 输出 [1, 2]
解决方法,默认参数改成不可变的变量,或者 None
def add_item_fixed(item, items=None):
if items is None:
items = []
items.append(item)
return items
# 第一次调用返回 [1]
print(add_item_fixed(1)) # 输出 [1]
# 第二次调用返回 [2]
print(add_item_fixed(2)) # 输出 [2]
本站总访问量次 本站访客数人次 本文总阅读量次